package demo4;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 石方旭
 * Date: 2022-08-08
 * Time: 15:19
 */
public class TestDemo2 {

    /**
     * 扫描指定目录，并找到名称中包含指定字符的所有普通文件（不包含目录），并且后续询问用户是否要删除该文件
     * @param args
     */
    public static void main(String[] args) {
        //输入你要扫描的目录
        System.out.println("输入你要扫描的目录");
        Scanner scan = new Scanner(System.in);
        String rootPath = scan.next();
        File root = new File(rootPath);
        if(!root.isDirectory()){
            System.out.println("输入的不是目录名,无法扫描");
            return;
        }
        //输入你要删除的文件
        System.out.println("输入你要删除的文件");
        Scanner scan1 = new Scanner(System.in);
        String toDelete = scan1.next();

        //进行递归扫描你要删除的文件
        scanDir(root,toDelete);

    }
    public static void scanDir(File root,String toDelete){
        if(root==null) return;
        File[] file = root.listFiles();//将目录的文件全部放在file数组里面

        //遍历目录中所有文件,寻找你要删除的toDelete
        for(File f : file){
            if(f.isDirectory()){
                //如果是目录就继续扫描该目录的子目录,知道找到文件位置
                scanDir(f,toDelete);
            }else {
                //遍历到普通文件,看是否要删除
                tryDelete(f,toDelete);
                System.out.println("删除成功");
            }
        }
    }

    public static void tryDelete(File f ,String toDelete){
        if(f.getName().contains(toDelete)){
            try {
                System.out.println("是否要删除Y/N" + f.getCanonicalPath());
                Scanner scan = new Scanner(System.in);
                String s = scan.next();
                if(s.equals("Y")){
                    //证明要进行删除
                    f.delete();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}
